package movilmax.sia_corp.action;

import java.util.Map;

import movilmax.sia_corp.model.RpErrores;
import movilmax.sia_corp.model.Usuario;

import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class AsignarProspecto extends ActionSupport{

	private static final long serialVersionUID = 1L;
	
	private String cod_prospecto;
	private String des_prospecto;
	private String cod_vendedor;
	private String obs;
	private String fecha_lim;
	private String pros_status;
	private RpErrores errores;

	
	
	public String mostrar_frm() throws Exception {
		this.setFecha_lim(new Fecha().agregar(6, 2) );
		return SUCCESS;
	}
	@SuppressWarnings("rawtypes")
	public String asignar() throws Exception {
		
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if(USUARIO== null){
	    	this.addActionError("La sesion del usuario ha caducado");
	    	return ERROR;
	    }
	    if(cod_prospecto==null){
	    	this.addActionError("Debe indicar el codigo del prospecto");
	    	return ERROR;
	    }
	    if(cod_vendedor==null){
	    	this.addActionError("Debe indicar el codigo del vendedor");
	    	return ERROR;
	    }
	    Conectar BASE=new Conectar();
		Fecha fecha=new Fecha();
		String dia= fecha.getFecha();
		String hora=fecha.getHoras();
		String SQL="",obs="NINGUNA";
		String stx=this.getPros_status();
		if(BASE.getMsg().equals("SI")){
			if(stx.equals("POR ASIGNAR")){
				obs="ASIGNADO POR SUPERVISOR";
				//asigar prospecto a vendedor
				SQL="UPDATE corp_asignaciones set status='REASIGNADO',fecha_actualizo='" + dia + "',hora_actualizo='" + hora + "' where prospecto='" + getCod_prospecto() + "' and status in('EN PROCESO')   ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="UPDATE prospectos set status='EN PROCESO' where codigo='" + getCod_prospecto() + "'  ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="INSERT INTO corp_asignaciones(prospecto,vendedor,observaciones,fecha,hora,fecha_actualizo,hora_actualizo,status) "+
		        "VALUES ('" + getCod_prospecto() + "','" + getCod_vendedor() + "','" +obs + "','" + dia + "','" + hora + "','" + dia + "','" + hora + "','EN PROCESO' )";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="UPDATE corp_sitesurvey set fecha_act='"+ dia +"',hora_act='"+hora+"',vendedor_='"+getCod_vendedor()+"'  Where prospecto='"+getCod_prospecto()+"'  ";
    	        BASE.getBaseDatos().ejecutar(SQL);
				setCod_vendedor("-1");
				this.addActionMessage("Asignado");
			}else if(stx.equals("EN PROCESO")  || stx.equals("EN PAUSA") || stx.equals("RECHAZADO")  ) {
				obs="REASIGNADO POR SUPERVISOR";
				SQL="UPDATE corp_asignaciones set status='REASIGNADO',fecha_actualizo='" + dia + "',hora_actualizo='" + hora + "',obs_status='REASIGNADO A OTRO VENDEDOR' where prospecto='" + getCod_prospecto() + "' and status in('EN PROCESO','RECHAZADO','EN PAUSA') ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="UPDATE prospectos set status='EN PROCESO' where codigo='" + getCod_prospecto() + "'  ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="INSERT INTO corp_asignaciones(prospecto,vendedor,observaciones,fecha,hora,fecha_actualizo,hora_actualizo,status) "+
		        "VALUES ('" + getCod_prospecto() + "','" + getCod_vendedor() + "','" +obs + "','" + dia + "','" + hora + "','" + dia + "','" + hora + "','EN PROCESO' )";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="UPDATE corp_sitesurvey set fecha_act='"+ dia +"',hora_act='"+hora+"',vendedor_='"+getCod_vendedor()+"'  Where prospecto='"+getCod_prospecto()+"'  ";
    	        BASE.getBaseDatos().ejecutar(SQL);
				setCod_vendedor("-1");
				this.addActionMessage("ReAsignado");
			 }else{
				BASE.getBaseDatos().cerrarConexion(); 
				this.addActionError("Status invalido");
				return ERROR;  
			 }
		}else{
				this.addActionError("No hay conexion al servidor");
				return ERROR;
		}
		
		SQL="Select P.identificacion,P.nombres+' '+P.apellidos as razonx,P.tipo,P.telefono,P.telefono_oficina,P.celular,P.email,X.serv_i+' '+X.vel_i as solicita_i,X.serv_d+' '+X.vel_d as solicita_d,X.dispositivo,X.observaciones,U.email as em_vendedor,U2.email as em_sup,V.supervisor,V.descripcion as des_vend,X.presupuesto "+
            "from prospectos P,detalle_serv_solicitado X,corp_asignaciones A,usuarios U,vendedores V,usuarios U2  "+
            "Where P.codigo='"+ this.getCod_prospecto() +"' and  P.codigo = x.prospecto And P.codigo = A.prospecto and A.status='EN PROCESO' and A.vendedor=V.cod  and V.usuario=U.usuario and V.supervisor=U2.usuario ";
		//this.addActionMessage(SQL);
		Resultado RCS = BASE.getBaseDatos().consultar(SQL);
        if(RCS.RP){
        	 
        	String MPARA ="dick@movilmax.com,"+RCS.getCadena("em_sup")+","+RCS.getCadena("em_vendedor");
        	String ASIGNADO_A=RCS.getCadena("des_vend");
        	String razon=RCS.getCadena("identificacion")+" - "+RCS.getCadena("razonx");
        	String telfs=RCS.getCadena("telefono")+" / "+RCS.getCadena("telefono_oficina")+" / "+RCS.getCadena("celular");
        	String email=RCS.getCadena("email");
        	String solic_i=RCS.getCadena("solicita_i");
        	String solic_d=RCS.getCadena("solicita_d");
        	String disp=RCS.getCadena("dispositivo");
        	String presu=RCS.getCadena("presupuesto");
        	String tipo=RCS.getCadena("tipo");
        	String obs_=RCS.getCadena("observaciones");
        	//String nv_prop=RCS.getCadena("supervisor");
        	String nv_prop=RCS.getCadena("supervisor");
        	String  MSG_EM="";
		        	//*********************************ENVIAR CORREO REGISTRO PROSPECTO ****************************************************************//
			        MSG_EM = "Se le ha asignado un prospecto "+tipo+" <br/>\n";
					MSG_EM = MSG_EM + "Prospecto asignado por "+ USUARIO.getDescripcion() +" desde (SIA - WEB )<br/> \n";
					MSG_EM = MSG_EM + "Asignado  a: " + ASIGNADO_A + " <br/> \n";
					MSG_EM = MSG_EM + "Razon social: " + razon + " <br/>\n"; 
					MSG_EM = MSG_EM + "Telefonos: " + telfs +" <br/>\n";
					MSG_EM = MSG_EM + "Email: " + email + " <br/>\n";
					MSG_EM = MSG_EM + "Solicita servicio internet : " + solic_i + " <br/>\n";
					if(tipo.equalsIgnoreCase("corporativo") ){
						MSG_EM = MSG_EM + "Solicita servicio datos: " + solic_d + " <br/>\n";
					}else{
						MSG_EM = MSG_EM + "Solicita dispositivo: " + disp + " <br/>\n";	
					}	
					MSG_EM = MSG_EM + "Presupuesto: " + presu + " <br/>\n";
					MSG_EM = MSG_EM + "Observaciones: " + obs_ + " <br/>\n";
		
					SQL=" INSERT INTO apli_emails (de,para,cabecera,mensaje) VALUES('sia@movilmax.com','" + MPARA + "','PROSPECTO " + tipo.toUpperCase() +" ( "+  razon +" ) "+obs+"','" + MSG_EM + "' ) ";
					BASE.getBaseDatos().ejecutar(SQL);
			        //*************************************FIN DE ENVIO DE CORREO*********************************************************//
					SQL="UPDATE prospectos set prop='"+nv_prop+"' where codigo='" + getCod_prospecto() + "'  ";
					BASE.getBaseDatos().ejecutar(SQL);
        }
        SQL="INSERT INTO corp_seguimiento_actividades " +
			"(prospecto,actividad,detalle,obs,usuario,fecha,hora) "+
			"VALUES('"+this.getCod_prospecto()+"','9','0','"+obs+"','"+ USUARIO.getUsuario() +"','"+dia+"','"+hora+"' )";
        BASE.getBaseDatos().ejecutar(SQL); 
        BASE.getBaseDatos().cerrarConexion(); 
		return SUCCESS;
	}
	
	@SuppressWarnings("rawtypes")
	public String act_obs() throws Exception {
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if(USUARIO== null){
	    	this.addActionError("La sesion del usuario ha caducado");
	    	return ERROR;
	    }
	    if(cod_prospecto==null){
	    	this.addActionError("Debe indicar el codigo del prospecto");
	    	return ERROR;
	    }
	    if(obs==null){
	    	this.setObs("NINGUNA");	
	    }
	    if(this.getObs().length()==0){
	    	this.setObs("NINGUNA");	
	    }
	    Conectar BASE=new Conectar();
		Fecha fecha=new Fecha();
		String dia= fecha.getFecha();
		String hora=fecha.getHoras();
		String SQL="";
		if(BASE.getMsg().equals("SI")){
				SQL="UPDATE prospectos set obs_eps='"+this.getObs()+"',fecha_act='" + dia + "',hora_act='" + hora + "' where codigo='" + getCod_prospecto() + "'  ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="INSERT INTO corp_seguimiento_actividades " +
	    			"(prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
	    			"VALUES('"+this.getCod_prospecto()+"','9','9982','"+ this.getObs()+"','"+ USUARIO.getUsuario() +"','"+ dia +"','"+ hora +"','ACTUALIZADO' )";
	    	    BASE.getBaseDatos().ejecutar(SQL); 
				this.addActionMessage("Observacion registrada, fecha status ( "+ dia +" "+hora+" )" );
				BASE.getBaseDatos().cerrarConexion(); 
		}else{
				this.addActionError("No hay conexion al servidor");
				return ERROR;
		}
		
		return SUCCESS;
	}
	
    @SuppressWarnings("rawtypes")
	public String rechazar() throws Exception {
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if(USUARIO== null){
	    	this.addActionError("La sesion del usuario ha caducado");
	    	return ERROR;
	    }
	    if(cod_prospecto==null){
	    	this.addActionError("Debe indicar el codigo del prospecto");
	    	return ERROR;
	    }
	    if(obs==null){
	    	this.setObs("NINGUNA");	
	    }
	    if(this.getObs().length()==0){
	    	this.setObs("NINGUNA");	
	    }
	    Conectar BASE=new Conectar();
		Fecha fecha=new Fecha();
		String dia= fecha.getFecha();
		String hora=fecha.getHoras();
		String SQL="";
		if(BASE.getMsg().equals("SI")){
				SQL="Select A.status from corp_asignaciones A  "+
	            "Where A.prospecto='" + getCod_prospecto() + "' and A.vendedor='"+ USUARIO.getCod_vendedor() +"' and A.status='RECHAZADO' ";
				Resultado RCS = BASE.getBaseDatos().consultar(SQL);
		        if(RCS.RP){
		        	this.addActionError("El prospecto ya fue rechazado");
					return ERROR;
		        }
				SQL="UPDATE corp_asignaciones set status='RECHAZADO',fecha_actualizo='" + dia + "',hora_actualizo='" + hora + "',obs_status='"+ this.getObs() +"' where prospecto='" + getCod_prospecto() + "' and vendedor='"+ USUARIO.getCod_vendedor() +"' ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="UPDATE prospectos set status='RECHAZADO',fecha_act='" + dia + "',hora_act='" + hora + "' where codigo='" + getCod_prospecto() + "'  ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="INSERT INTO corp_seguimiento_actividades " +
	    			"(prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
	    			"VALUES('"+this.getCod_prospecto()+"','9','9998','"+ this.getObs() +"','"+ USUARIO.getUsuario() +"','"+ dia +"','"+ hora +"','REGISTRADO' )";
	    	    BASE.getBaseDatos().ejecutar(SQL); 
				this.addActionMessage("Prospecto rechazado fecha status ( "+ dia +" "+hora+" )" );
		}else{
				this.addActionError("No hay conexion al servidor");
				return ERROR;
		}
		
		SQL="Select P.identificacion,P.nombres+' '+P.apellidos as razonx,P.tipo,P.telefono,P.telefono_oficina,P.celular,P.email,X.serv_i+' '+X.vel_i as solicita_i,X.serv_d+' '+X.vel_d as solicita_d,X.dispositivo,X.observaciones,U.email as em_vendedor,V.supervisor,V.descripcion as des_vend,X.presupuesto "+
            "from prospectos P,detalle_serv_solicitado X,corp_asignaciones A,usuarios U,vendedores V  "+
            "Where P.codigo='"+ this.getCod_prospecto() +"' and P.codigo = x.prospecto And P.codigo = A.prospecto and A.vendedor=V.cod  and V.usuario=U.usuario";
		Resultado RCS = BASE.getBaseDatos().consultar(SQL);
        if(RCS.RP){
        	String MPARA ="dick@movilmax.com";
        	String razon=RCS.getCadena("identificacion")+" - "+RCS.getCadena("razonx");
        	String tipo=RCS.getCadena("tipo");
        	String  MSG_EM="";
		        	//*********************************ENVIAR CORREO REGISTRO PROSPECTO ****************************************************************//
			        MSG_EM = "Se le ha rechazado un prospecto "+tipo+" <br/>\n";
					MSG_EM = MSG_EM + "Prospecto rechazado por el vendedor: "+USUARIO.getDescripcion() +" desde (SIA - WEB )<br/> \n";
					MSG_EM = MSG_EM + "Razon social: " + razon + " <br/>\n"; 
					MSG_EM = MSG_EM + "Usuario status: "+USUARIO.getDescripcion() +" <br/> \n";
					MSG_EM = MSG_EM + "Observaciones: "+ this.getObs()+"<br/>\n";
					SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA + "','PROSPECTO " + tipo.toUpperCase() + " RECHAZADO','" + MSG_EM + "' ) ";
					BASE.getBaseDatos().ejecutar(SQL);
			        //*************************************FIN DE ENVIO DE CORREO*********************************************************//	
        }
        BASE.getBaseDatos().cerrarConexion(); 
		return SUCCESS;
	}
    
  @SuppressWarnings("rawtypes")
public String pausar() throws Exception {
		
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if(USUARIO== null){
	    	this.addActionError("La sesion del usuario ha caducado");
	    	return ERROR;
	    }
	    if(cod_prospecto==null){
	    	this.addActionError("Debe indicar el codigo del prospecto");
	    	return ERROR;
	    }
	    Conectar BASE=new Conectar();
		Fecha fecha=new Fecha();
		String dia= fecha.getFecha();
		String hora=fecha.getHoras();
		String SQL="";
		
		if ( fecha_lim==null){
			this.setFecha_lim("01/01/2070");
		}
		if (this.getFecha_lim().length()==0){
			this.setFecha_lim("01/01/2070");
		}
		if(obs==null){
	    	this.setObs("NINGUNA");	
	    }
	    if(this.getObs().length()==0){
	    	this.setObs("NINGUNA");	
	    }
		if(BASE.getMsg().equals("SI")){
				SQL="Select P.pausar_hasta from prospectos P  "+
		            "Where P.codigo='" + getCod_prospecto() + "' and P.status='EN PAUSA' ";
				Resultado RCS = BASE.getBaseDatos().consultar(SQL);
			    if(RCS.RP){
			        this.addActionError("El prospecto ya fue puesto en pausa");
					return ERROR;
			    }
			
				SQL="UPDATE corp_asignaciones set status='EN PAUSA',fecha_actualizo='" + dia + "',hora_actualizo='" + hora + "' where prospecto='" + getCod_prospecto() + "' and vendedor='"+ USUARIO.getCod_vendedor() +"' ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="UPDATE prospectos set status='EN PAUSA',fecha_act='" + dia + "',hora_act='" + hora + "',pausar_hasta='"+ this.getFecha_lim()+"'  where codigo='" + getCod_prospecto() + "'  ";
				BASE.getBaseDatos().ejecutar(SQL);
				SQL="INSERT INTO corp_seguimiento_actividades " +
    			"(prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
    			"VALUES('"+this.getCod_prospecto()+"','9','9990','"+ this.getObs() +"','"+ USUARIO.getUsuario() +"','"+ dia +"','"+ hora +"','REGISTRADO' )";
				BASE.getBaseDatos().ejecutar(SQL); 
				this.addActionMessage("Prospecto en pausa hasta la fecha ="+ this.getFecha_lim() +", fecha status ( "+ dia +" "+hora+" )" );
		}else{
				this.addActionError("No hay conexion al servidor");
				return ERROR;
		}
		
		SQL="Select P.identificacion,P.nombres+' '+P.apellidos as razonx,P.tipo,P.telefono,P.telefono_oficina,P.celular,P.email,X.serv_i+' '+X.vel_i as solicita_i,X.serv_d+' '+X.vel_d as solicita_d,X.dispositivo,X.observaciones,U.email as em_vendedor,V.supervisor,V.descripcion as des_vend,X.presupuesto,U2.email as em_sup "+
            "from prospectos P,detalle_serv_solicitado X,corp_asignaciones A,usuarios U,vendedores V,usuarios U2  "+
            "Where P.codigo='"+ this.getCod_prospecto() +"' and  P.codigo = x.prospecto And P.codigo = A.prospecto and A.vendedor=V.cod  and V.usuario=U.usuario and V.supervisor=U2.usuario ";
		
		Resultado RCS = BASE.getBaseDatos().consultar(SQL);
        if(RCS.RP){
        	String MPARA ="dick@movilmax.com";
        	String razon=RCS.getCadena("identificacion")+" - "+RCS.getCadena("razonx");
        	String tipo=RCS.getCadena("tipo");
        	String  MSG_EM="";
		        	//*********************************ENVIAR CORREO REGISTRO PROSPECTO ****************************************************************//
			        MSG_EM = "Prospecto "+tipo+" EN PAUSA<br/>\n";
					MSG_EM = MSG_EM + "Prospecto puesto en pausa debido a no estar en cobertura <br/> \n";
					MSG_EM = MSG_EM + "Vendedor: "+USUARIO.getDescripcion() +" desde (SIA - WEB )<br/> \n";
					MSG_EM = MSG_EM + "Razon social  : " + razon + " <br/>\n"; 
					MSG_EM = MSG_EM + "Fecha hasta   : "+ this.getFecha_lim() +" <br/> \n";
					MSG_EM = MSG_EM + "Observaciones : "+ this.getObs()  +"<br/>\n";
					SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA + "','PROSPECTO " + tipo.toUpperCase() + " SIN COBERTURA','" + MSG_EM + "' ) ";
					BASE.getBaseDatos().ejecutar(SQL);
			        //*************************************FIN DE ENVIO DE CORREO*********************************************************//
        }
        BASE.getBaseDatos().cerrarConexion(); 
		return SUCCESS;
	}

	public String getCod_prospecto() {
		return cod_prospecto;
	}
	public void setCod_prospecto(String cod_prospecto) {
		this.cod_prospecto = cod_prospecto;
	}
	public String getCod_vendedor() {
		return cod_vendedor;
	}
	public void setCod_vendedor(String cod_vendedor) {
		this.cod_vendedor = cod_vendedor;
	}
	public String getObs() {
		return obs;
	}
	public void setObs(String obs) {
		this.obs = obs;
	}
	public RpErrores getErrores() {
		return errores;
	}
	public void setErrores(RpErrores errores) {
		this.errores = errores;
	}
	public String getPros_status() {
		return pros_status;
	}
	public void setPros_status(String pros_status) {
		this.pros_status = pros_status;
	}
	public String getFecha_lim() {
		return fecha_lim;
	}
	public void setFecha_lim(String fecha_lim) {
		this.fecha_lim = fecha_lim;
	}
	public String getDes_prospecto() {
		return des_prospecto;
	}
	public void setDes_prospecto(String des_prospecto) {
		this.des_prospecto = des_prospecto;
	}
}
